<?php

include 'crudAbstract.class.php';
include '../config/database.class.php';

class DepartamentosController extends CrudAbstract{
    
    private $conexao = NULL;

    function __construct() {

        $this->conexao = Database::conectar();
    }
    
    /**
     * 
     * @param Departamentos_model $objvo
     * Método adicionar novo departamento
     */
    public function adicionar($objvo) {

        try {

            if ($objvo instanceof Departamentos_model) {

                $stmt = $this->conexao->prepare("INSERT INTO tbl_departamentos " .
                        "(coddepartamento, departamento) VALUES(?, ?)");

                $stmt->bindValue(1, $objvo->getCoddepartamento());
                $stmt->bindValue(2, $objvo->getDepartamento());                
                $stmt->execute();                
                
            } else {

                print 'nao e uma instancia';
            }
        } catch (PDOException $exception) {

            print 'ERROR:. ' . $exception->getMessage();
        }
    }
    
    /**
     * 
     * @return type
     * Médoto listar departamentos
     */    
     public function listar() {

        $sql = "SELECT*FROM tbl_departamentos";

        $stmt = $this->conexao->prepare($sql);
        $stmt->execute();
        $stmt->setFetchMode(PDO::FETCH_ASSOC);

        return $stmt->fetchAll();
        
    }
    
    /**
     * 
     * @param Departamentos_model $objvo
     * @param type $condicao
     * Método atualizar departamento
     */    
    public function atualizar($objvo, $condicao) {
        
        if($objvo instanceof Departamentos_model){
        
        try {

            $stmt = $this->conexao->prepare("UPDATE tbl_departamentos SET " .
                                            "departamento=? WHERE iddepartamento=?");

            $this->conexao->beginTransaction();

            $stmt->bindValue(1, $objvo->getDepartamento());
            $stmt->bindValue(2, $condicao);
            $stmt->execute();

            $this->conexao->commit();
            $this->conexao = NULL;
            
        } catch (PDOException $exception) {

            print 'ERROR.::. ' . $exception->getMessage();
        }
        
        }else{
            
            print 'nao e instancia';
            
        }
    }
    
    /**
     * 
     * @param type $iddepartamento
     * @return int
     * Método apagar departamento
     */
    public function deletar($iddepartamento) {

        try {

            $delete = $this->conexao->prepare("DELETE FROM tbl_departamentos WHERE " .
                                              "iddepartamento=$iddepartamento");
            $delete->execute();

            if ($delete >= '1') {

                return $delete;
                
            } else {

                return 0;
            }
            
        } catch (PDOException $e) {

            print 'ERROR.::. ' . $e->getMessage();
        }
    }
}


